package org.javaforever.gatescore.layouts;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import org.javaforever.gatescore.core.FrontDomain;
import org.javaforever.gatescore.core.FrontDropdown;
import org.javaforever.gatescore.core.FrontField;
import org.javaforever.gatescore.core.FrontMethod;
import org.javaforever.gatescore.core.FrontVar;
import org.javaforever.gatescore.core.FrontVerb;
import org.javaforever.gatescore.core.Statement;
import org.javaforever.gatescore.core.StatementList;
import org.javaforever.gatescore.core.UtilsMethodGenerator;
import org.javaforever.gatescore.core.ValidateInfo;
import org.javaforever.gatescore.core.Writeable;
import org.javaforever.gatescore.core.WriteableUtil;
import org.javaforever.gatescore.exception.ValidateException;
import org.javaforever.gatescore.generators.UtilMethodsGenerator;
import org.javaforever.gatescore.reports.LayoutComb;
import org.javaforever.gatescore.utils.DomainUtil;
import org.javaforever.gatescore.verb.Activate;
import org.javaforever.gatescore.verb.ActivateAll;
import org.javaforever.gatescore.verb.Add;
import org.javaforever.gatescore.verb.Clone;
import org.javaforever.gatescore.verb.CloneAll;
import org.javaforever.gatescore.verb.Delete;
import org.javaforever.gatescore.verb.DeleteAll;
import org.javaforever.gatescore.verb.Export;
import org.javaforever.gatescore.verb.ExportPDF;
import org.javaforever.gatescore.verb.ExportPPT;
import org.javaforever.gatescore.verb.ExportWord;
import org.javaforever.gatescore.verb.FilterExcel;
import org.javaforever.gatescore.verb.FilterPDF;
import org.javaforever.gatescore.verb.FilterPPT;
import org.javaforever.gatescore.verb.FilterWord;
import org.javaforever.gatescore.verb.ListActive;
import org.javaforever.gatescore.verb.SearchByFieldsByPage;
import org.javaforever.gatescore.verb.SoftDelete;
import org.javaforever.gatescore.verb.SoftDeleteAll;
import org.javaforever.gatescore.verb.Toggle;
import org.javaforever.gatescore.verb.ToggleOne;
import org.javaforever.gatescore.verb.Update;
import org.javaforever.gatescore.widgets.TreePanel;

public class TreeGridLayout extends LayoutComb{
	protected FrontDomain parentTreeDomain;
	protected FrontDomain childDomain;
	protected String parentId = "parentId";
	protected String innerTreeParentId = "parentId";
	protected TreePanel treePanel;
	
	public TreeGridLayout() {
		super();
	}
	
	public TreeGridLayout(FrontDomain parentTreeDomain,FrontDomain childDomain,String innerTreeParentId,String parentId) throws ValidateException{
		super();
		this.standardName = "TreeGrid"+parentTreeDomain.getCapFirstDomainName()+childDomain.getCapFirstDomainName();
		this.label = parentTreeDomain.getText()+ childDomain.getText() +"树表";
		if ("english".equalsIgnoreCase(parentTreeDomain.getLanguage())) {
			this.label ="Tree grid for "+parentTreeDomain.getText()+ " and " + childDomain.getText();
		}
		this.parentTreeDomain = parentTreeDomain;
		this.childDomain = childDomain;	
		this.innerTreeParentId = innerTreeParentId;
		this.parentId = parentId;
		FrontField innerTreeParentField = parentTreeDomain.findFieldByFieldName(innerTreeParentId);
		FrontField treeParentField = childDomain.findFieldByFieldName(parentId);
		this.treePanel = new TreePanel(parentTreeDomain,childDomain,innerTreeParentField,treeParentField);
		
		this.domains.add(this.parentTreeDomain);
		this.domains.add(this.childDomain);	

		FrontVerb update = new Update(this.childDomain);
		FrontVerb delete = new Delete(this.childDomain);
		FrontVerb add = new Add(this.childDomain);
		FrontVerb softdelete = new SoftDelete(this.childDomain);
		FrontVerb listactive = new ListActive(this.childDomain);
		FrontVerb deleteAll = new DeleteAll(this.childDomain);
		FrontVerb softDeleteAll = new SoftDeleteAll(this.childDomain);
		FrontVerb toggle = new Toggle(this.childDomain);
		FrontVerb toggleOne = new ToggleOne(this.childDomain);
		FrontVerb searchByFieldsByPage = new SearchByFieldsByPage(this.childDomain);
		FrontVerb activate = new Activate(this.childDomain);
		FrontVerb activateAll = new ActivateAll(this.childDomain);
		FrontVerb export = new Export(this.childDomain);
		FrontVerb clone = new Clone(this.childDomain);
		FrontVerb cloneAll = new CloneAll(this.childDomain);
		FrontVerb exportExcel = new Export(this.childDomain);
		FrontVerb exportPDF = new ExportPDF(this.childDomain);
		FrontVerb exportWord = new ExportWord(this.childDomain);
		FrontVerb exportPPT = new ExportPPT(this.childDomain);
		FrontVerb filterExcel = new FilterExcel(this.childDomain);
		FrontVerb filterPDF = new FilterPDF(this.childDomain);
		FrontVerb filterWord = new FilterWord(this.childDomain);
		FrontVerb filterPPT = new FilterPPT(this.childDomain);

		if(!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) {
			this.verbs.add(update);
			this.verbs.add(delete);
			this.verbs.add(add);
			this.verbs.add(softdelete);
			this.verbs.add(deleteAll);
			this.verbs.add(softDeleteAll);
			this.verbs.add(toggle);
			this.verbs.add(toggleOne);			
			this.verbs.add(activate);
			this.verbs.add(activateAll);			
			this.verbs.add(clone);
			this.verbs.add(cloneAll);
		}
		this.verbs.add(listactive);
		this.verbs.add(searchByFieldsByPage);
		this.verbs.add(export);
		this.verbs.add(exportExcel);
		this.verbs.add(exportPDF);
		this.verbs.add(exportWord);
		this.verbs.add(exportPPT);
		this.verbs.add(filterExcel);
		this.verbs.add(filterPDF);
		this.verbs.add(filterWord);
		this.verbs.add(filterPPT);
	}

	public FrontDomain getChildDomain() {
		return childDomain;
	}

	public void setChildDomain(FrontDomain childDomain) {
		this.childDomain = childDomain;
	}


	public FrontDomain getParentTreeDomain() {
		return parentTreeDomain;
	}

	public void setParentTreeDomain(FrontDomain parentTreeDomain) {
		this.parentTreeDomain = parentTreeDomain;
	}

	@Override
	public void generateCombFiles(String targetFolderPath) throws Exception {
		String relativeFolder = "src/views/pages/";
		WriteableUtil.writeToFile(targetFolderPath + "/"+relativeFolder+this.standardName.toLowerCase()+".vue", this.generateStatementList().getContent());
	}

	@Override
	public StatementList generateStatementList() throws Exception{
		List<Writeable> sList = new ArrayList<Writeable>();
		sList.add(new Statement(1000L,0,"<template>"));
		sList.add(new Statement(2000L,1,"<div class=\"app-container\">"));
		sList.add(new Statement(2100L,2,"<div class=\"tree\" style=\"width:15%;float:left\">"));
		
		StatementList sl = this.treePanel.generateWidgetStatements();
		sl.setSerial(2200L);
		sl.setIndent(3);
		sList.add(sl);
		sList.add(new Statement(2300L,2,"</div>"));
		sList.add(new Statement(2400L,2,"<div style=\"width:85%;float:right;\">"));
		sList.add(new Statement(3000L,3,"<el-form ref=\"postForm\" :model=\"postForm\" class=\"form-container\">"));
		sList.add(new Statement(4000L,4,"<div class=\"createPost-main-container\">"));
		
		serial = 5000L;
		Set<FrontField> set = this.childDomain.getSearchFields();
		List<FrontField> list = new ArrayList<FrontField>();
		list.addAll(set);
		for (int i=0;i<set.size();i++) {
			if (i%4==0) {
				sList.add(new Statement(serial,5,"<el-row>"));
				serial += 1000L;
			}
			FrontField f = list.get(i);
			if (!(f instanceof FrontDropdown)) {				
				sList.add(new Statement(serial,6,"<el-col :span=\"4\">"));
				sList.add(new Statement(serial+1000L,7,"<el-form-item label-width=\"120px\" label=\""+f.getText()+"\" class=\"postInfo-container-item\">"));
				sList.add(new Statement(serial+2000L,8,"<el-input v-model=\"postForm."+f.getFieldName()+"\" label=\""+f.getText()+"\" style=\"width: 160px;\"/>"));
				sList.add(new Statement(serial+4000L,7,"</el-form-item>"));
				sList.add(new Statement(serial+5000L,6,"</el-col>"));
				serial = serial+12000L;
			} else {
				FrontDropdown dp = (FrontDropdown)f;
				sList.add(new Statement(serial,6,"<el-col :span=\"4\">"));
				sList.add(new Statement(serial+1000L,7,"<el-form-item label-width=\"120px\" label=\""+dp.getText()+"\" class=\"postInfo-container-item\" prop=\""+dp.getAliasOrName()+"\">"));
				if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
					sList.add(new Statement(serial+2000L,8,"<el-select v-model=\"postForm."+dp.getLowerFirstFieldName()+"\" value-key=\""+dp.getTarget().getDomainId().getFieldName()+"\" placeholder=\"Please choose\" style=\"width: 160px;\" @change=\"translate"+dp.getTarget().getCapFirstDomainName()+"\">"));
					sList.add(new Statement(serial+2500L,9,"<el-option label=\"All\" value=\"\"/>"));
				}else {
					sList.add(new Statement(serial+2000L,8,"<el-select v-model=\"postForm."+dp.getLowerFirstFieldName()+"\" value-key=\""+dp.getTarget().getDomainId().getFieldName()+"\" placeholder=\"请选择\" style=\"width: 160px;\" @change=\"translate"+dp.getTarget().getCapFirstDomainName()+"\">"));
					sList.add(new Statement(serial+2500L,9,"<el-option label=\"全部\" value=\"\"/>"));
				}
				sList.add(new Statement(serial+3000L,9,"<el-option"));
				sList.add(new Statement(serial+4000L,10,"v-for=\"item in active"+dp.getTarget().getCapFirstPlural()+"\""));
				sList.add(new Statement(serial+5000L,10,":key=\"item."+dp.getTarget().getDomainId().getFieldName()+"\""));
				sList.add(new Statement(serial+6000L,10,":label=\"item."+dp.getTarget().getDomainName().getFieldName()+"\""));
				sList.add(new Statement(serial+7000L,10,":value=\"item."+dp.getTarget().getDomainId().getFieldName()+"\"/>"));
				sList.add(new Statement(serial+9000L,8,"</el-select>"));
				sList.add(new Statement(serial+10000L,7,"</el-form-item>"));
				sList.add(new Statement(serial+11000L,6,"</el-col>"));
				serial = serial+12000L;
			}	
			if (i==3) {
				sList.add(new Statement(serial,6,"<el-col :span=\"4\">"));
				sList.add(new Statement(serial+500L,7,"<el-form-item label-width=\"10px\" class=\"postInfo-container-item\">"));
				if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
					sList.add(new Statement(serial+1000L,8,"<el-dropdown @command=\"searchFilterFun\">"));
					sList.add(new Statement(serial+2000L,8,"<el-button type=\"primary\" @click=\"this.search"+this.childDomain.getCapFirstPlural()+"ByFieldsByPage\" >"));
					sList.add(new Statement(serial+3000L,9,"<span >Search</span><i class=\"el-icon-arrow-down el-icon--right\"/>"));
					sList.add(new Statement(serial+4000L,9,"</el-button>"));
					sList.add(new Statement(serial+5000L,9,"<el-dropdown-menu slot=\"dropdown\">"));
					if (!this.childDomain.isVerbDenied("FilterExcel")) {
						sList.add(new Statement(serial+6000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+7000L,11,"command=\"Excel\">FilterExcel</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterPDF")) {
						sList.add(new Statement(serial+8000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+9000L,11,"command=\"PDF\">FilterPDF</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterWord")) {
						sList.add(new Statement(serial+10000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+11000L,11,"command=\"Word\">FilterWord</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterPPT")) {
						sList.add(new Statement(serial+11100L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+11200L,11,"command=\"PPT\">FilterPPT</el-dropdown-item>"));
					}
					sList.add(new Statement(serial+12000L,9,"</el-dropdown-menu>"));
					sList.add(new Statement(serial+13000L,8,"</el-dropdown>"));
				}else {
					sList.add(new Statement(serial+1000L,8,"<el-dropdown @command=\"searchFilterFun\">"));
					sList.add(new Statement(serial+2000L,9,"<el-button type=\"primary\" @click=\"this.search"+this.childDomain.getCapFirstPlural()+"ByFieldsByPage\" >"));
					sList.add(new Statement(serial+3000L,10,"<span >搜索</span><i class=\"el-icon-arrow-down el-icon--right\"/>"));
					sList.add(new Statement(serial+4000L,9,"</el-button>"));
					sList.add(new Statement(serial+5000L,9,"<el-dropdown-menu slot=\"dropdown\">"));
					if (!this.childDomain.isVerbDenied("FilterExcel")) {
						sList.add(new Statement(serial+6000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+7000L,11,"command=\"Excel\">Excel过滤</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterPDF")) {
						sList.add(new Statement(serial+8000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+9000L,11,"command=\"PDF\">PDF过滤</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterWord")) {
						sList.add(new Statement(serial+10000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+11000L,11,"command=\"Word\">Word过滤</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterPPT")) {
						sList.add(new Statement(serial+11100L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+11200L,11,"command=\"PPT\">PPT过滤</el-dropdown-item>"));
					}
					sList.add(new Statement(serial+12000L,9,"</el-dropdown-menu>"));
					sList.add(new Statement(serial+13000L,8,"</el-dropdown>"));
				}
				sList.add(new Statement(serial+14000L,7,"</el-form-item>"));
				sList.add(new Statement(serial+15000L,6,"</el-col>"));
				serial += 16000L;
			}
			if (i%4==3) {
				sList.add(new Statement(serial,5,"</el-row>"));
				serial += 1000L;
			}
		}
		for (int i=set.size()%4;i<4;i++) {
			sList.add(new Statement(serial,6,"<el-col :span=\"4\"/>"));
			serial += 2000L;
			if (i==3&&set.size()<4) {
				sList.add(new Statement(serial,6,"<el-col :span=\"4\">"));
				sList.add(new Statement(serial+1000L,7,"<el-form-item label-width=\"10px\" class=\"postInfo-container-item\">"));
				if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
					sList.add(new Statement(serial+1500L,8,"<el-dropdown @command=\"searchFilterFun\">"));
					sList.add(new Statement(serial+2000L,9,"<el-button type=\"primary\" @click=\"this.search"+this.childDomain.getCapFirstPlural()+"ByFieldsByPage\" >"));
					sList.add(new Statement(serial+3000L,10,"<span >Search</span><i class=\"el-icon-arrow-down el-icon--right\"/>"));
					sList.add(new Statement(serial+4000L,9,"</el-button>"));
					sList.add(new Statement(serial+5000L,9,"<el-dropdown-menu slot=\"dropdown\">"));
					if (!this.childDomain.isVerbDenied("FilterExcel")) {
						sList.add(new Statement(serial+6000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+7000L,11,"command=\"Excel\">FilterExcel</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterPDF")) {
						sList.add(new Statement(serial+8000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+9000L,11,"command=\"PDF\">FilterPDF</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterWord")) {
						sList.add(new Statement(serial+10000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+11000L,11,"command=\"Word\">FilterWord</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterPPT")) {
						sList.add(new Statement(serial+11100L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+11200L,11,"command=\"PPT\">FilterPPT</el-dropdown-item>"));
					}
					sList.add(new Statement(serial+12000L,9,"</el-dropdown-menu>"));
					sList.add(new Statement(serial+13000L,8,"</el-dropdown>"));
				}else {
					sList.add(new Statement(serial+1500L,8,"<el-dropdown @command=\"searchFilterFun\">"));
					sList.add(new Statement(serial+2000L,9,"<el-button type=\"primary\" @click=\"this.search"+this.childDomain.getCapFirstPlural()+"ByFieldsByPage\" >"));
					sList.add(new Statement(serial+3000L,10,"<span >搜索</span><i class=\"el-icon-arrow-down el-icon--right\"/>"));
					sList.add(new Statement(serial+4000L,9,"</el-button>"));
					sList.add(new Statement(serial+5000L,9,"<el-dropdown-menu slot=\"dropdown\">"));
					if (!this.childDomain.isVerbDenied("FilterExcel")) {
						sList.add(new Statement(serial+6000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+7000L,11,"command=\"Excel\">Excel过滤</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterPDF")) {
						sList.add(new Statement(serial+8000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+9000L,11,"command=\"PDF\">PDF过滤</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterWord")) {
						sList.add(new Statement(serial+10000L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+11000L,11,"command=\"Word\">Word过滤</el-dropdown-item>"));
					}
					if (!this.childDomain.isVerbDenied("FilterPPT")) {
						sList.add(new Statement(serial+11100L,10,"<el-dropdown-item"));
						sList.add(new Statement(serial+11200L,11,"command=\"PPT\">PPT过滤</el-dropdown-item>"));
					}
					sList.add(new Statement(serial+12000L,9,"</el-dropdown-menu>"));
					sList.add(new Statement(serial+13000L,8,"</el-dropdown>"));
				}
				sList.add(new Statement(serial+14000L,7,"</el-form-item>"));
				sList.add(new Statement(serial+15000L,6,"</el-col>"));
				serial += 16000L;
			}
			if (i%4==3) {
				sList.add(new Statement(serial,5,"</el-row>"));
				serial += 1000L;
			}
		}
		sList.add(new Statement(serial+1000L,4,"</div>"));
		sList.add(new Statement(serial+2500L,4,"<el-button-group>"));
		if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
			if (!this.childDomain.isVerbDenied("Add")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+3000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"success\" icon=\"el-icon-plus\" @click=\"showAddDialog\">Add</el-button>"));
			if (!this.childDomain.isVerbDenied("View")) sList.add(new Statement(serial+3500L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"success\" icon=\"el-icon-search\" @click=\"showViewDialog\">View</el-button>"));
			if (!this.childDomain.isVerbDenied("Update")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+4000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"success\" icon=\"el-icon-edit\" @click=\"showEditDialog\">Update</el-button>"));
			if (!this.childDomain.isVerbDenied("Activate")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+5000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-star-off\" @click=\"activate"+this.childDomain.getCapFirstDomainName()+"\">Activate</el-button>"));
			if (!this.childDomain.isVerbDenied("Toggle")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+6000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-sort\" @click=\"toggle"+this.childDomain.getCapFirstDomainName()+"\">Toggle</el-button>"));
			if (!this.childDomain.isVerbDenied("ToggleOne")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+7000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-sort\" @click=\"toggleOne"+this.childDomain.getCapFirstDomainName()+"\">Toggle One</el-button>"));
			if (!this.childDomain.isVerbDenied("SoftDelete")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+8000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-delete\" @click=\"softDelete"+this.childDomain.getCapFirstDomainName()+"\">Soft Delete</el-button>"));
			if (!this.childDomain.isVerbDenied("Clone")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+8500L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-plus\" @click=\"clone"+this.childDomain.getCapFirstDomainName()+"\">Clone</el-button>"));
			if (!this.childDomain.isVerbDenied("Delete")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+9000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"danger\" icon=\"el-icon-delete\" @click=\"delete"+this.childDomain.getCapFirstDomainName()+"\">Delete</el-button>"));
			if (!this.childDomain.isVerbDenied("ActivateAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+10000L,5,"<el-button :disabled=\"this.selectList.length==0\" size=\"mini\" type=\"primary\" icon=\"el-icon-star-off\" @click=\"activateAll"+this.childDomain.getCapFirstPlural()+"\">Batch Activate</el-button>"));
			if (!this.childDomain.isVerbDenied("SoftDeleteAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+11000L,5,"<el-button :disabled=\"this.selectList.length==0\" size=\"mini\" type=\"primary\" icon=\"el-icon-delete\" @click=\"softDeleteAll"+this.childDomain.getCapFirstPlural()+"\">Batch Soft Delete</el-button>"));
			if (!this.childDomain.isVerbDenied("CloneAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+11500L,5,"<el-button :disabled=\"this.selectList.length==0\" size=\"mini\" type=\"primary\" icon=\"el-icon-plus\" @click=\"cloneAll"+this.childDomain.getCapFirstPlural()+"\">Batch Clone</el-button>"));
			if (!this.childDomain.isVerbDenied("DeleteAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+12000L,5,"<el-button :disabled=\"this.selectList.length==0\" size=\"mini\" type=\"danger\" icon=\"el-icon-delete\" @click=\"deleteAll"+this.childDomain.getCapFirstPlural()+"\">Batch Delete</el-button>"));
			if (!this.childDomain.isVerbDenied("Export")) sList.add(new Statement(serial+13000L,5,"<el-button size=\"mini\" type=\"primary\" icon=\"el-icon-date\" @click=\"export"+this.childDomain.getCapFirstPlural()+"\">Excel</el-button>"));
			if (!this.childDomain.isVerbDenied("ExportPDF")) sList.add(new Statement(serial+14000L,5,"<el-button size=\"mini\" type=\"primary\" icon=\"el-icon-edit-outline\" @click=\"export"+this.childDomain.getCapFirstPlural()+"PDF\">PDF</el-button>"));
			if (!this.childDomain.isVerbDenied("ExportWord")) sList.add(new Statement(serial+15000L,5,"<el-button size=\"mini\" type=\"primary\" icon=\"el-icon-upload\" @click=\"export"+this.childDomain.getCapFirstPlural()+"Word\">Word</el-button>"));
			if (!this.childDomain.isVerbDenied("ExportPPT")) sList.add(new Statement(serial+15100L,5,"<el-button size=\"mini\" type=\"primary\" icon=\"el-icon-menu\" @click=\"exportPPT"+this.childDomain.getCapFirstPlural()+"\">PPT</el-button>"));
		}else {
			if (!this.childDomain.isVerbDenied("Add")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+3000L,5,"<el-button size=\"mini\" type=\"success\" icon=\"el-icon-plus\" @click=\"showAddDialog\">添加</el-button>"));
			if (!this.childDomain.isVerbDenied("View")) sList.add(new Statement(serial+3500L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"success\" icon=\"el-icon-search\" @click=\"showViewDialog\">查看</el-button>"));
			if (!this.childDomain.isVerbDenied("Update")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+4000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"success\" icon=\"el-icon-edit\" @click=\"showEditDialog\">编辑</el-button>"));
			if (!this.childDomain.isVerbDenied("Activate")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+5000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-star-off\" @click=\"activate"+this.childDomain.getCapFirstDomainName()+"\">激活</el-button>"));
			if (!this.childDomain.isVerbDenied("Toggle")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+6000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-sort\" @click=\"toggle"+this.childDomain.getCapFirstDomainName()+"\">切换</el-button>"));
			if (!this.childDomain.isVerbDenied("ToggleOne")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+7000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-sort\" @click=\"toggleOne"+this.childDomain.getCapFirstDomainName()+"\">留一切换</el-button>"));
			if (!this.childDomain.isVerbDenied("SoftDelete")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+8000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-delete\" @click=\"softDelete"+this.childDomain.getCapFirstDomainName()+"\">软删除</el-button>"));
			if (!this.childDomain.isVerbDenied("Clone")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+8500L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"primary\" icon=\"el-icon-plus\" @click=\"clone"+this.childDomain.getCapFirstDomainName()+"\">克隆</el-button>"));
			if (!this.childDomain.isVerbDenied("Delete")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+9000L,5,"<el-button :disabled=\"this.selectList.length==0 || this.selectList.length > 1\" size=\"mini\" type=\"danger\" icon=\"el-icon-delete\" @click=\"delete"+this.childDomain.getCapFirstDomainName()+"\">删除</el-button>"));
			if (!this.childDomain.isVerbDenied("ActivateAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+10000L,5,"<el-button :disabled=\"this.selectList.length==0\" size=\"mini\" type=\"primary\" icon=\"el-icon-star-off\" @click=\"activateAll"+this.childDomain.getCapFirstPlural()+"\">批激活</el-button>"));
			if (!this.childDomain.isVerbDenied("SoftDeleteAll")) sList.add(new Statement(serial+11000L,5,"<el-button :disabled=\"this.selectList.length==0\" size=\"mini\" type=\"primary\" icon=\"el-icon-delete\" @click=\"softDeleteAll"+this.childDomain.getCapFirstPlural()+"\">批软删除</el-button>"));
			if (!this.childDomain.isVerbDenied("CloneAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+11500L,5,"<el-button :disabled=\"this.selectList.length==0\" size=\"mini\" type=\"primary\" icon=\"el-icon-plus\" @click=\"cloneAll"+this.childDomain.getCapFirstPlural()+"\">批克隆</el-button>"));
			if (!this.childDomain.isVerbDenied("DeleteAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sList.add(new Statement(serial+12000L,5,"<el-button :disabled=\"this.selectList.length==0\" size=\"mini\" type=\"danger\" icon=\"el-icon-delete\" @click=\"deleteAll"+this.childDomain.getCapFirstPlural()+"\">批删除</el-button>"));
			if (!this.childDomain.isVerbDenied("Export")) sList.add(new Statement(serial+13000L,5,"<el-button size=\"mini\" type=\"primary\" icon=\"el-icon-date\" @click=\"export"+this.childDomain.getCapFirstPlural()+"\">Excel</el-button>"));
			if (!this.childDomain.isVerbDenied("ExportPDF")) sList.add(new Statement(serial+14000L,5,"<el-button size=\"mini\" type=\"primary\" icon=\"el-icon-edit-outline\" @click=\"export"+this.childDomain.getCapFirstPlural()+"PDF\">PDF</el-button>"));
			if (!this.childDomain.isVerbDenied("ExportWord")) sList.add(new Statement(serial+15000L,5,"<el-button size=\"mini\" type=\"primary\" icon=\"el-icon-upload\" @click=\"export"+this.childDomain.getCapFirstPlural()+"Word\">Word</el-button>"));
			if (!this.childDomain.isVerbDenied("ExportPPT")) sList.add(new Statement(serial+15100L,5,"<el-button size=\"mini\" type=\"primary\" icon=\"el-icon-menu\" @click=\"exportPPT"+this.childDomain.getCapFirstPlural()+"\">PPT</el-button>"));
		}
		sList.add(new Statement(serial+15500L,4,"</el-button-group>"));
		sList.add(new Statement(serial+16000L,3,"</el-form>"));
		sList.add(new Statement(serial+17000L,3,"<br>"));
		sList.add(new Statement(serial+19000L,3,"<el-table :data=\"list\" :header-cell-style=\"{'background-color': '#3b8fce','color':'white'}\" :row-style=\"selectedHighlight\" v-loading=\"listLoading\" ref=\"table\" border fit highlight-current-row style=\"width: 100%\" @select-all=\"handleCheckedAll\" @selection-change=\"handleChecked\">"));
		sList.add(new Statement(serial+22000L,4,"<el-table-column type=\"selection\" align=\"center\" width=\"40px\"/>"));
		FrontField fid = this.childDomain.getDomainId()==null?null: this.childDomain.getDomainId();
		if (fid != null ) {
			sList.add(new Statement(serial+25000L,4,"<el-table-column width=\"80px\" align=\"center\" label=\""+fid.getText()+"\">"));
			sList.add(new Statement(serial+26000L,5,"<template slot-scope=\"scope\">"));
			sList.add(new Statement(serial+27000L,6,"<span>{{ scope.row."+fid.getFieldName()+" }}</span>"));
			sList.add(new Statement(serial+28000L,5,"</template>"));
			sList.add(new Statement(serial+29000L,4,"</el-table-column>"));
		}
		serial = serial+31000L;
		for (FrontField f:this.childDomain.getAllFieldsWithoutId()) {
			if (!(f instanceof FrontDropdown)) {
			if (f.getFieldType()!=null&&f.getFieldType().getTypeName()!=null&&f.getFieldType().getTypeName().equalsIgnoreCase("image")) {
					sList.add(new Statement(serial,4,"<el-table-column width=\"160px\" align=\"center\" label=\""+f.getText()+"\" :show-overflow-tooltip=\"true\">"));
					sList.add(new Statement(serial+1000L,5,"<template slot-scope=\"scope\">"));
					sList.add(new Statement(serial+2000L,6,"<img v-if=\"!scope.row."+f.getLowerFirstFieldName()+"\"　:src=\"'../static/images/blank.jpg'\" height=\"50\"/>"));
					sList.add(new Statement(serial+3000L,6,"<img v-else :src=\"'data:image/png;base64,'+scope.row."+f.getLowerFirstFieldName()+"\" height=\"50\"/>"));
					sList.add(new Statement(serial+4000L,5,"</template>"));
					sList.add(new Statement(serial+5000L,4,"</el-table-column>"));
				}else {
					sList.add(new Statement(serial,4,"<el-table-column width=\"160px\" align=\"center\" label=\""+f.getText()+"\">"));
					sList.add(new Statement(serial+1000L,5,"<template slot-scope=\"scope\">"));
					sList.add(new Statement(serial+2000L,6,"<span>{{ scope.row."+f.getFieldName()+" }}</span>"));
					sList.add(new Statement(serial+3000L,5,"</template>"));
					sList.add(new Statement(serial+4000L,4,"</el-table-column>"));
					sList.add(new Statement(serial+5000L,0,""));
				}
				serial = serial + 6000L;
			}else {
				FrontDropdown dp = (FrontDropdown)f;
				sList.add(new Statement(serial,4,"<el-table-column width=\"160px\" align=\"center\" label=\""+dp.getText()+"\">"));
				sList.add(new Statement(serial+1000L,5,"<template slot-scope=\"scope\">"));
				sList.add(new Statement(serial+2000L,6,"{{ scope.row."+dp.getAliasName()+" | "+dp.getTarget().getLowerFirstDomainName()+"Filter }}"));
				sList.add(new Statement(serial+3000L,5,"</template>"));
				sList.add(new Statement(serial+4000L,4,"</el-table-column>"));
				sList.add(new Statement(serial+5000L,0,""));
				serial = serial + 6000L;
			}			
		}
		sList.add(new Statement(serial,3,"</el-table>"));
		sList.add(new Statement(serial+1000L,0,""));
		sList.add(new Statement(serial+2000L,3,"<pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.rows\" @pagination=\"search"+this.childDomain.getCapFirstPlural()+"ByFieldsByPage\" />"));
		sList.add(new Statement(serial+3000L,0,""));
		
		if (!this.childDomain.isVerbDenied("Add")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) {
			sList.add(new Statement(serial+4000L,3,"<el-dialog"));
			sList.add(new Statement(serial+6000L,4,":visible.sync=\"addDialogVisible\""));
			sList.add(new Statement(serial+7000L,4,":before-close=\"handleClose\""));
			if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
				sList.add(new Statement(serial+7500L,4,"title=\"Add\""));
			}else {
				sList.add(new Statement(serial+7500L,4,"title=\"新增\""));
			}
			sList.add(new Statement(serial+8000L,4,"width=\"850px\">"));			
			sList.add(new Statement(serial+9000L,4,"<el-form :model=\"form\" label-position=\"right\" label-width=\"120px\">"));
			sList.add(new Statement(serial+10000L,5,"<el-row>"));
			serial = serial + 11000L;
			for (FrontField f:this.childDomain.getAllFieldsWithoutId()) {
				if (!(f instanceof FrontDropdown)) {
					if (f.getFieldType().getTypeName().equalsIgnoreCase("image")) {
						sList.add(new Statement(serial+1000L,6,"<el-col :span=\"12\">"));
						sList.add(new Statement(serial+2000L,7,"<el-form-item label=\""+f.getText()+"\">"));
						sList.add(new Statement(serial+3000L,8,"<el-upload"));
						sList.add(new Statement(serial+3500L,9,"name=\"files[]\""));
						sList.add(new Statement(serial+3600L,9,":headers=\"this.token\""));
						sList.add(new Statement(serial+4000L,9,":action=\"this.baseApi+'"+this.childDomain.getLowerFirstDomainName()+this.childDomain.getControllerNamingSuffix()+"/addUpload"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"'\""));
						sList.add(new Statement(serial+5000L,9,":show-file-list=\"false\""));
						sList.add(new Statement(serial+6000L,9,":on-success=\"handle"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"ImageSuccess\""));
						sList.add(new Statement(serial+7000L,9,":before-upload=\"before"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"ImageUpload\">"));
						sList.add(new Statement(serial+8000L,9,"<img v-if=\""+f.getLowerFirstFieldName()+"ImageUrl\" :src=\""+f.getLowerFirstFieldName()+"ImageUrl\" width=\"300\">"));
						sList.add(new Statement(serial+9000L,9,"<img v-else :src=\"'../static/images/blank.jpg'\" width=\"300\">"));
						sList.add(new Statement(serial+10000L,9,"<br>"));
						if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
							sList.add(new Statement(serial+11000L,9,"<el-button type=\"primary\" plain v-on:click=\"up"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"ImageData\">Upload</el-button>"));
						}else {
							sList.add(new Statement(serial+11000L,9,"<el-button type=\"primary\" plain v-on:click=\"up"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"ImageData\">上传</el-button>"));
						}
						sList.add(new Statement(serial+12000L,8,"</el-upload>"));
						sList.add(new Statement(serial+13000L,7,"</el-form-item>"));
						sList.add(new Statement(serial+14000L,6,"</el-col>"));
					}else {
						sList.add(new Statement(serial,6,"<el-col :span=\"12\">"));
						sList.add(new Statement(serial+1000L,7,"<el-form-item label=\""+f.getText()+"\">"));
						sList.add(new Statement(serial+2000L,8,"<el-input v-model=\"form."+f.getFieldName()+"\" style=\"width: 240px;\"/>"));
						sList.add(new Statement(serial+3000L,7,"</el-form-item>"));
						sList.add(new Statement(serial+4000L,6,"</el-col>"));
					}
					serial = serial + 15000L;
				}else {
					FrontDropdown dp = (FrontDropdown)f;
					sList.add(new Statement(serial,6,"<el-col :span=\"12\">"));
					sList.add(new Statement(serial+1000L,7,"<el-form-item label=\""+dp.getText()+"\" prop=\""+dp.getAliasOrName()+"\">"));
					if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
						sList.add(new Statement(serial+2000L,8,"<el-select v-model=\"form."+dp.getAliasName()+"\" value-key=\""+dp.getTarget().getDomainId().getFieldName()+"\" placeholder=\"Please choose \" style=\"width: 240px;\" @change=\"translate"+dp.getTarget().getCapFirstDomainName()+"\">"));
					}else{
						sList.add(new Statement(serial+2000L,8,"<el-select v-model=\"form."+dp.getAliasName()+"\" value-key=\""+dp.getTarget().getDomainId().getFieldName()+"\" placeholder=\"请选择\" style=\"width: 240px;\" @change=\"translate"+dp.getTarget().getCapFirstDomainName()+"\">"));
					}
					sList.add(new Statement(serial+3000L,9,"<el-option"));
					sList.add(new Statement(serial+4000L,10,"v-for=\"item in active"+dp.getTarget().getCapFirstPlural()+"\""));
					sList.add(new Statement(serial+5000L,10,":key=\"item."+dp.getAliasName()+"\""));
					sList.add(new Statement(serial+6000L,10,":label=\"item."+dp.getTarget().getDomainName().getFieldName()+"\""));
					sList.add(new Statement(serial+7000L,10,":value=\"item."+dp.getTarget().getDomainId().getFieldName()+"\"/>"));
					sList.add(new Statement(serial+9000L,8,"</el-select>"));
					sList.add(new Statement(serial+10000L,7,"</el-form-item>"));
					sList.add(new Statement(serial+11000L,6,"</el-col>"));
					serial = serial + 15000L;
				}			
			}
			sList.add(new Statement(serial,5,"</el-row>"));
			sList.add(new Statement(serial+1000L,4,"</el-form>"));
			sList.add(new Statement(serial+2000L,4,"<span slot=\"footer\" class=\"dialog-footer\">"));
			if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
				sList.add(new Statement(serial+3000L,5,"<el-button @click=\"addDialogVisible = false\">Cancel</el-button>"));
				sList.add(new Statement(serial+4000L,5,"<el-button type=\"primary\" @click=\"add"+this.childDomain.getCapFirstDomainName()+"\">Add</el-button>"));
			}else {
				sList.add(new Statement(serial+3000L,5,"<el-button @click=\"addDialogVisible = false\">取 消</el-button>"));
				sList.add(new Statement(serial+4000L,5,"<el-button type=\"primary\" @click=\"add"+this.childDomain.getCapFirstDomainName()+"\">新增</el-button>"));
			}
			sList.add(new Statement(serial+5000L,4,"</span>"));
			sList.add(new Statement(serial+6000L,3,"</el-dialog>"));
			sList.add(new Statement(serial+7000L,0,""));
		}
		
		if (!this.childDomain.isVerbDenied("Update")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) {
			sList.add(new Statement(serial+8000L,3,"<el-dialog"));
			sList.add(new Statement(serial+10000L,4,":visible.sync=\"editDialogVisible\""));
			sList.add(new Statement(serial+11000L,4,":before-close=\"handleClose\""));
			if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
				sList.add(new Statement(serial+11500L,4,"title=\"Update\""));
			}else {
				sList.add(new Statement(serial+11500L,4,"title=\"编辑\""));
			}
			sList.add(new Statement(serial+12000L,4,"width=\"850px\">"));
			sList.add(new Statement(serial+13000L,4,"<el-form :model=\"form\" label-position=\"right\" label-width=\"120px\">"));
			sList.add(new Statement(serial+14000L,5,"<el-input v-model=\"form."+this.childDomain.getDomainId().getLowerFirstFieldName()+"\" type=\"hidden\"/>"));
			sList.add(new Statement(serial+15000L,5,"<el-row>"));
			serial = serial + 16000L;
			for (FrontField f:this.childDomain.getAllFieldsWithoutId()) {
				if (!(f instanceof FrontDropdown)) {
					if (f.getFieldType().getTypeName().equalsIgnoreCase("image")) {
						sList.add(new Statement(serial+1000L,6,"<el-col :span=\"12\">"));
						sList.add(new Statement(serial+2000L,7,"<el-form-item label=\""+f.getText()+"\">"));
						sList.add(new Statement(serial+3000L,8,"<el-upload"));
						sList.add(new Statement(serial+3500L,9,"name=\"files[]\""));
						sList.add(new Statement(serial+3600L,9,":headers=\"this.token\""));
						sList.add(new Statement(serial+4000L,9,":action=\"this.baseApi+'"+this.childDomain.getLowerFirstDomainName()+this.childDomain.getControllerNamingSuffix()+"/addUpload"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"'\""));
						sList.add(new Statement(serial+5000L,9,":show-file-list=\"false\""));
						sList.add(new Statement(serial+6000L,9,":on-success=\"handle"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"ImageSuccess\""));
						sList.add(new Statement(serial+7000L,9,":before-upload=\"before"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"ImageUpload\">"));
						sList.add(new Statement(serial+8000L,9,"<img v-if=\""+f.getLowerFirstFieldName()+"ImageUrl\" :src=\""+f.getLowerFirstFieldName()+"ImageUrl\" width=\"300\"/>"));
						sList.add(new Statement(serial+8500L,9,"<img v-else-if=\"!form."+f.getLowerFirstFieldName()+"\"　:src=\"'../static/images/blank.jpg'\" width=\"300\"/>"));
						sList.add(new Statement(serial+9000L,9,"<img v-else :src=\"'data:image/png;base64,'+form."+f.getLowerFirstFieldName()+"\" width=\"300\"/>"));
						sList.add(new Statement(serial+10000L,9,"<br>"));
						if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
							sList.add(new Statement(serial+11000L,9,"<el-button type=\"primary\" plain v-on:click=\"up"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"ImageData\">Upload</el-button>"));
						}else {  
							sList.add(new Statement(serial+11000L,9,"<el-button type=\"primary\" plain v-on:click=\"up"+this.childDomain.getCapFirstDomainName()+f.getCapFirstFieldName()+"ImageData\">上传</el-button>"));
						}
						sList.add(new Statement(serial+12000L,8,"</el-upload>"));
						sList.add(new Statement(serial+13000L,7,"</el-form-item>"));
						sList.add(new Statement(serial+14000L,6,"</el-col>"));
					}else if (f.getFieldType().getTypeName().equalsIgnoreCase("boolean")){
						sList.add(new Statement(serial,6,"<el-col :span=\"12\">"));
						sList.add(new Statement(serial+1000L,7,"<el-form-item label=\""+f.getText()+"\">"));
						sList.add(new Statement(serial+2000L,8,"<el-input v-model=\"form."+f.getFieldName()+"\" style=\"width: 240px;\"/>"));
						sList.add(new Statement(serial+3000L,7,"</el-form-item>"));
						sList.add(new Statement(serial+4000L,6,"</el-col>"));
					}else {
						sList.add(new Statement(serial,6,"<el-col :span=\"12\">"));
						sList.add(new Statement(serial+1000L,7,"<el-form-item label=\""+f.getText()+"\">"));
						sList.add(new Statement(serial+2000L,8,"<el-input v-model=\"form."+f.getFieldName()+"\" style=\"width: 240px;\"/>"));
						sList.add(new Statement(serial+3000L,7,"</el-form-item>"));
						sList.add(new Statement(serial+4000L,6,"</el-col>"));
					}
					serial = serial + 15000L;
				}else {
					FrontDropdown dp = (FrontDropdown)f;
					sList.add(new Statement(serial,6,"<el-col :span=\"12\">"));
					sList.add(new Statement(serial+1000L,7,"<el-form-item label=\""+dp.getText()+"\" prop=\""+dp.getAliasOrName()+"\">"));
					if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
						sList.add(new Statement(serial+2000L,8,"<el-select v-model=\"form."+dp.getAliasName()+"\" value-key=\""+dp.getTarget().getDomainId().getFieldName()+"\" placeholder=\"Please choose \" style=\"width: 240px;\" @change=\"translate"+dp.getTarget().getCapFirstDomainName()+"\">"));
					}else {
						sList.add(new Statement(serial+2000L,8,"<el-select v-model=\"form."+dp.getAliasName()+"\" value-key=\""+dp.getTarget().getDomainId().getFieldName()+"\" placeholder=\"请选择\" style=\"width: 240px;\" @change=\"translate"+dp.getTarget().getCapFirstDomainName()+"\">"));
					}
					sList.add(new Statement(serial+3000L,9,"<el-option"));
					sList.add(new Statement(serial+4000L,10,"v-for=\"item in active"+dp.getTarget().getCapFirstPlural()+"\""));
					sList.add(new Statement(serial+5000L,10,":key=\"item."+dp.getAliasName()+"\""));
					sList.add(new Statement(serial+6000L,10,":label=\"item."+dp.getTarget().getDomainName().getFieldName()+"\""));
					sList.add(new Statement(serial+7000L,10,":value=\"item."+dp.getTarget().getDomainId().getFieldName()+"\"/>"));
					sList.add(new Statement(serial+9000L,8,"</el-select>"));
					sList.add(new Statement(serial+10000L,7,"</el-form-item>"));
					sList.add(new Statement(serial+11000L,6,"</el-col>"));
					serial = serial + 15000L;
				}
			}
			sList.add(new Statement(serial,5,"</el-row>"));
			sList.add(new Statement(serial+1000L,4,"</el-form>"));
			sList.add(new Statement(serial+2000L,4,"<span slot=\"footer\" class=\"dialog-footer\">"));
			if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
				sList.add(new Statement(serial+3000L,5,"<el-button @click=\"editDialogVisible = false\">Cancel</el-button>"));
				sList.add(new Statement(serial+4000L,5,"<el-button type=\"primary\" @click=\"update"+this.childDomain.getCapFirstDomainName()+"\">Update</el-button>"));
			}else {
				sList.add(new Statement(serial+3000L,5,"<el-button @click=\"editDialogVisible = false\">取 消</el-button>"));
				sList.add(new Statement(serial+4000L,5,"<el-button type=\"primary\" @click=\"update"+this.childDomain.getCapFirstDomainName()+"\">编辑</el-button>"));
			}
			sList.add(new Statement(serial+5000L,4,"</span>"));
			sList.add(new Statement(serial+6000L,3,"</el-dialog>"));
		}
		
		if (!this.childDomain.isVerbDenied("View")) {
			sList.add(new Statement(serial+8000L,3,"<el-dialog"));
			sList.add(new Statement(serial+9000L,4,":visible.sync=\"viewDialogVisible\""));
			sList.add(new Statement(serial+10000L,4,":before-close=\"handleClose\""));
			if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
				sList.add(new Statement(serial+11000L,4,"title=\"View\""));
			}else {
				sList.add(new Statement(serial+11000L,4,"title=\"查看\""));
			}
			sList.add(new Statement(serial+12000L,4,"width=\"850px\">"));
			sList.add(new Statement(serial+13000L,4,"<el-form :model=\"form\" label-position=\"right\" label-width=\"120px\">"));
			sList.add(new Statement(serial+14000L,5,"<el-input v-model=\"form."+this.childDomain.getDomainId().getLowerFirstFieldName()+"\" type=\"hidden\"/>"));
			sList.add(new Statement(serial+15000L,5,"<el-row>"));
			serial = serial + 16000L;
			for (FrontField f:this.childDomain.getAllFieldsWithoutId()) {
				if (!(f instanceof FrontDropdown)) {
					if (f.getFieldType().getTypeName().equalsIgnoreCase("image")) {
						sList.add(new Statement(serial+1000L,6,"<el-col :span=\"12\">"));
						sList.add(new Statement(serial+2000L,7,"<el-form-item label=\""+f.getText()+"\">"));
						sList.add(new Statement(serial+3000L,8,"<img v-if=\"!form."+f.getLowerFirstFieldName()+"\"　:src=\"'../static/images/blank.jpg'\" width=\"300\"/>"));
						sList.add(new Statement(serial+4000L,8,"<img v-else :src=\"'data:image/png;base64,'+form."+f.getLowerFirstFieldName()+"\" width=\"300\"/>"));
						sList.add(new Statement(serial+5000L,7,"</el-form-item>"));
						sList.add(new Statement(serial+6000L,6,"</el-col>"));
					}else if (f.getFieldType().getTypeName().equalsIgnoreCase("boolean")){
						sList.add(new Statement(serial,6,"<el-col :span=\"12\">"));
						sList.add(new Statement(serial+1000L,7,"<el-form-item label=\""+f.getText()+"\">"));
						sList.add(new Statement(serial+2000L,8,"<el-input v-model=\"''+form."+f.getFieldName()+"\" style=\"width: 240px;\"/>"));
						sList.add(new Statement(serial+3000L,7,"</el-form-item>"));
						sList.add(new Statement(serial+4000L,6,"</el-col>"));
					} else {
						sList.add(new Statement(serial,6,"<el-col :span=\"12\">"));
						sList.add(new Statement(serial+1000L,7,"<el-form-item label=\""+f.getText()+"\">"));
						sList.add(new Statement(serial+2000L,8,"<el-input v-model=\"form."+f.getFieldName()+"\" style=\"width: 240px;\"/>"));
						sList.add(new Statement(serial+3000L,7,"</el-form-item>"));
						sList.add(new Statement(serial+4000L,6,"</el-col>"));
					}
					serial = serial + 12000L;
				}else {
					FrontDropdown dp = (FrontDropdown)f;
					sList.add(new Statement(serial,6,"<el-col :span=\"12\">"));
					sList.add(new Statement(serial+1000L,7,"<el-form-item label=\""+dp.getText()+"\" prop=\""+dp.getAliasOrName()+"\">"));
					if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
						sList.add(new Statement(serial+2000L,8,"<el-select v-model=\"form."+dp.getAliasName()+"\" value-key=\""+dp.getTarget().getDomainId().getFieldName()+"\" placeholder=\"Please choose \" style=\"width: 240px;\" @change=\"translate"+dp.getTarget().getCapFirstDomainName()+"\">"));
					}else {
						sList.add(new Statement(serial+2000L,8,"<el-select v-model=\"form."+dp.getAliasName()+"\" value-key=\""+dp.getTarget().getDomainId().getFieldName()+"\" placeholder=\"请选择\" style=\"width: 240px;\" @change=\"translate"+dp.getTarget().getCapFirstDomainName()+"\">"));
					}
					sList.add(new Statement(serial+3000L,9,"<el-option"));
					sList.add(new Statement(serial+4000L,10,"v-for=\"item in active"+dp.getTarget().getCapFirstPlural()+"\""));
					sList.add(new Statement(serial+5000L,10,":key=\"item."+dp.getAliasName()+"\""));
					sList.add(new Statement(serial+6000L,10,":label=\"item."+dp.getTarget().getDomainName().getFieldName()+"\""));
					sList.add(new Statement(serial+7000L,10,":value=\"item."+dp.getTarget().getDomainId().getFieldName()+"\"/>"));
					sList.add(new Statement(serial+9000L,8,"</el-select>"));
					sList.add(new Statement(serial+10000L,7,"</el-form-item>"));
					sList.add(new Statement(serial+11000L,6,"</el-col>"));
					serial = serial + 12000L;
				}
			}
			sList.add(new Statement(serial,5,"</el-row>"));
			sList.add(new Statement(serial+1000L,4,"</el-form>"));
			sList.add(new Statement(serial+2000L,4,"<span slot=\"footer\" class=\"dialog-footer\">"));
			if (this.childDomain.getLanguage().equalsIgnoreCase("english")) {
				sList.add(new Statement(serial+3000L,5,"<el-button @click=\"viewDialogVisible = false\">Close</el-button>"));
			}else {
				sList.add(new Statement(serial+3000L,5,"<el-button @click=\"viewDialogVisible = false\">关  闭</el-button>"));
			}
			sList.add(new Statement(serial+5000L,4,"</span>"));
			sList.add(new Statement(serial+6000L,3,"</el-dialog>"));
		}
		
		sList.add(new Statement(serial+7000L,0,""));
		sList.add(new Statement(serial+8000L,2,"</div>"));
		sList.add(new Statement(serial+8100L,1,"</div>"));
		sList.add(new Statement(serial+9000L,0,"</template>"));
		sList.add(new Statement(serial+10000L,0,"<script>"));
		sList.add(new Statement(serial+11000L,0,"import {"));
		
		StringBuilder sb = new StringBuilder("search"+this.childDomain.getCapFirstPlural()+"ByFieldsByPage, ");
		if (!this.childDomain.isVerbDenied("SoftDelete")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("softDelete"+this.childDomain.getCapFirstDomainName()+", ");	
		if (!this.childDomain.isVerbDenied("Activate")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("activate"+this.childDomain.getCapFirstDomainName()+", ");	
		if (!this.childDomain.isVerbDenied("Toggle")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("toggle"+this.childDomain.getCapFirstDomainName()+", ");	
		if (!this.childDomain.isVerbDenied("ToggleOne")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("toggleOne"+this.childDomain.getCapFirstDomainName()+", ");	
		if (!this.childDomain.isVerbDenied("Delete")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("delete"+this.childDomain.getCapFirstDomainName()+", ");	
		if (!this.childDomain.isVerbDenied("SoftDeleteAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("softDeleteAll"+this.childDomain.getCapFirstPlural()+", ");	
		if (!this.childDomain.isVerbDenied("DeleteAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("deleteAll"+this.childDomain.getCapFirstPlural()+", ");	
		if (!this.childDomain.isVerbDenied("ActivateAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("activateAll"+this.childDomain.getCapFirstPlural()+", ");	
		if (!this.childDomain.isVerbDenied("Add")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("add"+this.childDomain.getCapFirstDomainName()+", ");	
		if (!this.childDomain.isVerbDenied("Update")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("update"+this.childDomain.getCapFirstDomainName()+", ");	
		if (!this.childDomain.isVerbDenied("Clone")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("clone"+this.childDomain.getCapFirstDomainName()+", ");	
		if (!this.childDomain.isVerbDenied("CloneAll")&&!(this.childDomain instanceof org.javaforever.gatescore.core.FrontEnum)) sb.append("cloneAll"+this.childDomain.getCapFirstPlural()+", ");	
		
		sList.add(new Statement(serial+12000L,1,sb.substring(0,sb.length()-2)));
		sList.add(new Statement(serial+13000L,0,"} from '@/api/"+this.childDomain.getPlural().toLowerCase()+"'"));
		sList.add(new Statement(serial+14000L,0,"import { getToken } from '@/utils/auth'"));
		Set<FrontDomain> dpDomains = new TreeSet<FrontDomain>();
		FrontVar defaultForm = new FrontVar("defaultForm");
		FrontVar postForm = new FrontVar("postForm");
		FrontVar listQuery = new FrontVar("listQuery");
		FrontVar pagevars = new FrontVar("pagevars");
		FrontVar data = new FrontVar("data");	
		for (FrontField ff:this.childDomain.getAllFieldsWithoutId()) {
			if (ff instanceof FrontDropdown) {
				FrontDropdown dp = (FrontDropdown) ff;
				dpDomains.add(dp.getTarget());
			}
		}
		serial += 15000L;
		for (FrontDomain d:dpDomains) {
			sList.add(new Statement(serial,0,"import {"));
			sList.add(new Statement(serial+1000L,1,"listActive"+d.getCapFirstPlural()+""));
			sList.add(new Statement(serial+2000L,0,"} from '@/api/"+d.getPlural().toLowerCase()+"'"));
			serial += 3000L;
		}
		sList.add(new Statement(serial,0,""));
		sList.add(new Statement(serial+1000L,0,"import pagevars from '@/pagevars'"));
		sList.add(new Statement(serial+3000L,0,"import Pagination from '@/components/Pagination' // Secondary package based on el-pagination"));
		sList.add(new Statement(serial+4000L,0,""));
		StatementList tsl = UtilsMethodGenerator.generateDefaultFormBlockStatements(this.childDomain, defaultForm);
		tsl.setSerial(serial+5000L);
		sList.add(tsl);
		serial += 6000L;
		sList.add(new Statement(serial,0,""));
		sList.add(new Statement(serial+1000L,0,"export function isBlank(val) {"));
		sList.add(new Statement(serial+2000L,1,"if (val === undefined || val === null || val === '') return true"));
		sList.add(new Statement(serial+3000L,1,"else return false"));
		sList.add(new Statement(serial+4000L,0,"}"));
		sList.add(new Statement(serial+5000L,0,""));
		sList.add(new Statement(serial+6000L,0,"export default {"));
		sList.add(new Statement(serial+7000L,1,"inject: ['reload'],"));
		sList.add(new Statement(serial+8000L,1,"name: '"+this.childDomain.getCapFirstPlural()+"List',"));
		sList.add(new Statement(serial+9000L,1,"components: {"));
		sList.add(new Statement(serial+10000L,2,"Pagination"));
		sList.add(new Statement(serial+11000L,1,"},"));
		sList.add(new Statement(serial+12000L,1,"filters: {"));
		serial += 13000L;
		for (FrontDomain d:dpDomains) {
			sl = UtilsMethodGenerator.generateDomainFilterStatements(d, pagevars);
			sl.setSerial(serial);
			sl.setIndent(1);
			sList.add(sl);
			serial += 1000L;
		}
		sList.add(new Statement(serial,1,"},"));
		
		sl = UtilsMethodGenerator.generateDataBlockStatements(childDomain, listQuery, postForm, defaultForm, pagevars, dpDomains);
		sl.setSerial(serial+1000L);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateCreatedBlockStatements(childDomain, dpDomains);
		sl.setSerial(serial+2000L);
		sList.add(sl);
		
		sList.add(new Statement(serial+2050L,1,"methods: {"));
		
		sl = UtilMethodsGenerator.generateVueTreeDataMethodStatementList(parentTreeDomain);
		sl.setSerial(serial+2100L);
		sl.setIndent(1);
		sList.add(sl);
		sl = UtilMethodsGenerator.generateVueTreeExistsMethodStatementList(parentTreeDomain,treePanel.getInnerTreeParentId());
		sl.setSerial(serial+2200L);
		sl.setIndent(1);
		sList.add(sl);
		sl = UtilMethodsGenerator.generateVueTreeConvertMethodStatementList(parentTreeDomain,treePanel.getInnerTreeParentId());
		sl.setSerial(serial+2300L);
		sl.setIndent(2);
		sList.add(sl);
		sl = UtilMethodsGenerator.generateVueTreeNodeClickMethodStatementList(childDomain,treePanel.getTreeParentId());
		sl.setSerial(serial+2400L);
		sl.setIndent(2);
		sList.add(sl);
		sl = UtilMethodsGenerator.generateVueTreeChildNodesChangeMethodStatementList(parentTreeDomain);
		sl.setSerial(serial+2500L);
		sl.setIndent(2);
		sList.add(sl);
		sl = UtilMethodsGenerator.generateVueTreeParentNodesChangeMethodStatementList(parentTreeDomain);
		sl.setSerial(serial+2600L);
		sl.setIndent(2);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateSearchFilterFunMethodStatements(this.childDomain,!this.childDomain.isVerbDenied("FilterExcel"),!this.childDomain.isVerbDenied("FilterPDF"),!this.childDomain.isVerbDenied("FilterWord"),!this.childDomain.isVerbDenied("FilterPPT"));
		sl.setSerial(serial+4000L);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateToQueryStringMethodStatements();
		sl.setSerial(serial+5000L);
		sList.add(sl);
		
		serial+=6000L;
		for (FrontField f: childDomain.getFields()) {
			if (f.getFieldType()!=null&&f.getFieldType().getTypeName()!=null&&"image".equalsIgnoreCase(f.getFieldType().getTypeName())) {
				sl = UtilsMethodGenerator.generateHandleImageSuccessMethodStatements(childDomain, f);
				sl.setSerial(serial);
				sList.add(sl);
				sl = UtilsMethodGenerator.generateBeforeImageUploadsMethodStatements(childDomain, f);
				sl.setSerial(serial+1000L);
				sList.add(sl);
				sl = UtilsMethodGenerator.generateUpImageDataMethodStatements(childDomain, f);
				sl.setSerial(serial+2000L);
				sList.add(sl);
				serial+= 3000L;
			}				
		}
		
		sl = UtilsMethodGenerator.generateBuildParamsStatements(childDomain, listQuery, postForm);
		sl.setSerial(serial+4000L);
		sList.add(sl);
		
		if (childDomain.getDomainId()!= null) {
			sl = UtilsMethodGenerator.generateBuildIdsStatements(childDomain, data);
			sl.setSerial(serial+5000L);
			sList.add(sl);	
		}
		
		sl = UtilsMethodGenerator.generateParseBooleanMethodStatements();
		sl.setSerial(serial+5500L);
		sList.add(sl);	
		
		sl = UtilsMethodGenerator.generateParseBooleanIntMethodStatements();
		sl.setSerial(serial+5700L);
		sList.add(sl);	
		
		if (!this.childDomain.isVerbDenied("Delete")) {			
			sl = UtilsMethodGenerator.generateConfirmDeleteMethodStatements(this.childDomain);
			sl.setSerial(serial+6000L);
			sList.add(sl);
		}
		
		if (!this.childDomain.isVerbDenied("DeleteAll")) {	
			sl = UtilsMethodGenerator.generateConfirmDeleteAllMethodStatements(this.childDomain);
			sl.setSerial(serial+7000L);
			sList.add(sl);
		}
		
		sl = UtilsMethodGenerator.generateHandleSizeChangeMethodStatements(listQuery);
		sl.setSerial(serial+8000L);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateHandleCurrentChangeMethodStatements(listQuery);
		sl.setSerial(serial+9000L);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateHandleCheckedMethodStatements();
		sl.setSerial(serial+10000L);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateHandleCheckedAllMethodStatements(this.childDomain);
		sl.setSerial(serial+11000L);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateSelectedHighlightMethodStatements();
		sl.setSerial(serial+12000L);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateHandleCloseMethodStatements(this.childDomain.getLanguage());
		sl.setSerial(serial+13000L);
		sList.add(sl);
		
		sl = UtilsMethodGenerator.generateShowViewDialogMethodStatements();
		sl.setSerial(serial+13500L);
		sList.add(sl);	
		
		sl = UtilsMethodGenerator.generateShowAddDialogMethodStatements();
		sl.setSerial(serial+14000L);
		sList.add(sl);		
		
		sl = UtilsMethodGenerator.generateShowEditDialogMethodStatements();
		sl.setSerial(serial+15000L);
		sList.add(sl);		
		
		serial += 16000L;
		for (FrontVerb fv: this.verbs ) {
			FrontMethod m = fv.generateControllerMethod();
			if (m!= null) {
				m.setSerial(serial);
				sList.add(m.getMethodStatementList());
				serial += 1000L;
			}
		}

		for (FrontDomain dpd: dpDomains ) {
			ListActive la = new ListActive(dpd);
			FrontMethod m = la.generateControllerMethod();
			if (m!= null) {
				m.setSerial(serial);
				sList.add(m.getMethodStatementList());
				serial += 1000L;
			}
		}
		sl = UtilsMethodGenerator.generateSleepMethodStatements();
		sl.setSerial(serial);
		sList.add(sl);
		
		serial += 1000L;
		for (FrontDropdown dp : this.childDomain.getDropdownSet()) {
			sl = UtilsMethodGenerator.generateTranslateDomainMethodStatements(dp.getTarget());
			sl.setSerial(serial);
			sl.setIndent(1);
			sList.add(sl);
			serial += 1000L;
		}
		
		sList.add(new Statement(serial+1000L,1,"},"));
		sList.add(new Statement(serial+2000L,1,"watch: {"));
		sList.add(new Statement(serial+3000L,2,"selectList(data) {"));
		sList.add(new Statement(serial+4000L,3,"this.selectRows = []"));
		sList.add(new Statement(serial+5000L,3,"if (data.length > 0) {"));
		sList.add(new Statement(serial+6000L,4,"data.forEach((item, rowindex) => {"));
		sList.add(new Statement(serial+7000L,5,"this.selectRows.push(this.list.indexOf(item))"));
		sList.add(new Statement(serial+8000L,4,"})"));
		sList.add(new Statement(serial+9000L,3,"}"));
		sList.add(new Statement(serial+10000L,3,"this.selectRows.sort()"));
		sList.add(new Statement(serial+11000L,2,"}"));
		sList.add(new Statement(serial+12000L,1,"}"));
		sList.add(new Statement(serial+13000L,0,"}"));
		sList.add(new Statement(serial+14000L,0,"</script>"));
		return WriteableUtil.merge(sList);
	}

	@Override
	public void generateCombFromDomians() throws Exception {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ValidateInfo validateDomains() throws Exception {
		ValidateInfo info = new ValidateInfo();
		FrontField f = DomainUtil.findDomainFieldByFieldName(this.childDomain, this.parentId);
		if (f==null) info.addCompileError(this.getText()+"的parentId字段找不到！");
		if (f!=null && f instanceof FrontDropdown) {
			FrontDropdown dp = (FrontDropdown) f;
			if (!dp.getTargetName().equals(this.parentTreeDomain.getStandardName())) {
				info.addCompileError(this.getText()+"的parentId原字段类型不匹配！");
			}
		}
		return info;
	}

	@Override
	public boolean validateVerbs() throws Exception {
		// TODO Auto-generated method stub
		return false;
	}

	
	@Override
	public String getDomainNamesStr() {
		return this.parentTreeDomain.getStandardName()+","+this.childDomain.getStandardName();
	}

	public String getParentId() {
		return parentId;
	}

	public void setParentId(String parentId) {
		this.parentId = parentId;
	}

	public String getInnerTreeParentId() {
		return innerTreeParentId;
	}

	public void setInnerTreeParentId(String innerTreeParentId) {
		this.innerTreeParentId = innerTreeParentId;
	}

	@Override
	public boolean validateLayouts() throws Exception {
		// TODO Auto-generated method stub
		return false;
	}
}
